package com.tanhua.dubbo.api;

import com.tanhua.domain.mongo.CommonLikeUser;
import com.tanhua.domain.mongo.UserLike;
import com.tanhua.domain.vo.PageResult;

/**
 * @author liuyp
 * @date 2021/02/05
 */
public interface UserLikeApi {

    /**
     * 统计某用户互相喜欢的数量（好友数量）
     * @param userId 用户id
     * @return 和userId相互喜欢的数量
     */
    long queryFriendCount(long userId);

    /**
     * 统计某用户 喜欢的数量
     * @param userId 用户id
     * @return 喜欢的数量
     */
    long queryLikeCount(long userId);

    /**
     * 统计某用户 粉丝的数量（喜欢某用户的）
     * @param userId 用户id
     * @return 喜欢userId的数量
     */
    long queryFansCount(long userId);

    /**
     * 分页查询 某用户相互喜欢的列表
     * @param page 页码
     * @param pagesize 查询几条
     * @param userId 用户id
     * @return userId的好友的分页结果
     */
    PageResult<CommonLikeUser> findFriendList(int page, int pagesize, long userId);

    /**
     * 分页查询 某用户喜欢的 列表
     * @param page 页码
     * @param pagesize 查询几条
     * @param userId 用户id
     * @return 用户userId喜欢的分页结果
     */
    PageResult<CommonLikeUser> findLikeList(int page, int pagesize, long userId);

    /**
     * 分页查询 喜欢某用户的 列表
     * @param page 页码
     * @param pagesize 查询几条
     * @param userId 用户id
     * @return 喜欢userId的 分页结果
     */
    PageResult<CommonLikeUser> findFansList(int page, int pagesize, long userId);

    /**
     * 分页查询  某用户的访客列表
     * @param page 页码
     * @param pagesize 查询几条
     * @param userId 用户id
     * @return userId的访客 分页结果
     */
    PageResult<CommonLikeUser> findVisitorList(int page, int pagesize, long userId);

    /**
     * 删除喜欢关系
     * @param userId 用户id
     * @param likeUserId 喜欢的用户id
     */
    void remove(long userId, long likeUserId);

    UserLike userList(Long userId, Long likeUserId);

    void saveUserLike(Long userId, Long likeUserId);

}
